package com.atguigu.springbootdemo.service;

import com.atguigu.springbootdemo.bean.Employee;
import com.atguigu.springbootdemo.bean.Region;
import com.atguigu.springbootdemo.mapper.EmployeeMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * Created by Smexy on 2023/1/7
 *
 *  编写处理逻辑时，遵循公司的业务模型(产品经理)
 *
 *      假设当前公司规定，这个项目：
 *          在操作之前，需要xxxx
 *              操作
 *          在操作之后，需要xxxx
 *
 *    @Service: 两个作用：
 *          ①给自己人看，知道当前类时一个业务模型
 *          ②给容器看，容器扫描到顶了这个注解的类后，会自动使用反射，在容器中窗口当前类型的一个单例对象
 */
@Service
public class EmployeeServiceImpl implements EmployeeService
{
    @Autowired
    private EmployeeMapper mapper;

    @Override
    public Employee getEmployeeById(Integer id) {

        System.out.println("在操作之前，需要xxxx");

        Employee employee = mapper.getEmployeeById(id);

        System.out.println("在操作之后，需要xxxx");

        return employee;
    }

    @Override
    public void insertEmployee(Employee employee) {

        System.out.println("在操作之前，需要xxxx");

        mapper.insertEmployee(employee);

        System.out.println("在操作之后，需要xxxx");

    }

    @Override
    public void updateEmployee(Employee employee) {

        System.out.println("在操作之前，需要xxxx");

        mapper.updateEmployee(employee);

        System.out.println("在操作之后，需要xxxx");

    }

    @Override
    public void deleteEmployeeById(Integer id) {

        System.out.println("在操作之前，需要xxxx");

        mapper.deleteEmployeeById(id);

        System.out.println("在操作之后，需要xxxx");

    }

    @Override
    public List<Employee> getAll() {

        System.out.println("在操作之前，需要xxxx");

        List<Employee> all = mapper.getAll();

        System.out.println("在操作之后，需要xxxx");

        return all;
    }

    @Override
    public List<Region> getAllRegion() {
        return mapper.getAllRegion();
    }
}
